home *** CD-ROM | disk | FTP | other *** search
/ Creative Review 28 / Creative-Review-CD-ROM-28.iso / pc / kungfu / assets / game.dir / 00055_Script_fling class < prev    next >
Text File  |  1997-08-08  |  5KB  |  243 lines

  1. -- fling class method
  2. -- --------------------------------------------------
  3.  
  4. property data
  5. property cell
  6. property move
  7. property type
  8. property direction
  9. property ducks
  10.  
  11. property ancestor
  12.  
  13. property velocity
  14. property updategap
  15.  
  16. property celloffset
  17. property actualloc
  18.  
  19. -- --------------------------------------------------
  20. global gtime
  21. global gplayer
  22. global gcell
  23. global gfling
  24.  
  25. -- ==================================================
  26. -- new method
  27. -- --------------------------------------------------
  28. on new me, props
  29.   
  30.   minit me, props
  31.   return me
  32.   
  33. end mnew 
  34.  
  35. -- ==================================================
  36. -- minit method
  37. -- --------------------------------------------------
  38. on minit me, props
  39.   
  40.   --  put "in minit fling"
  41.   
  42.   set data = getaprop ( props, #data )
  43.   set cell = getaprop ( props, #cell )
  44.   set type = getaprop ( props, #type )
  45.   set move = getaprop ( props, #move )
  46.   set direction = getaprop ( props, #direction )
  47.   set ducks = checkaprop ( props,  #ducks, [:]  )
  48.   
  49.   set celloffset = mgetflingoffset ( gcell, direction ,  data )
  50.   
  51.   set animdata = getaprop ( props, #animdata )
  52.   set ancestor = new ( script "anim class" , animdata )
  53.   
  54.   set draw = new ( script "draw class" , props )
  55.   msetdraw me, [ draw ]
  56.   
  57.   set velocity = point ( 17, 0 )
  58.   
  59.   case direction of
  60.     #left: set velocity = - velocity 
  61.   end case
  62.   
  63.   set updategap = 2
  64.   
  65.   msetcell me
  66.   
  67.   --  put "out minit fling"
  68.   
  69.   
  70. end minit
  71.  
  72. -- ==================================================
  73. -- mstart method
  74. -- --------------------------------------------------
  75. on mstart me
  76.   
  77.   --  put "in mstart fling"
  78.   
  79.   mstart ancestor, me
  80.   
  81.   if ( cell >=  ( the cell of gplayer - 1 )) and ( cell <= ( the cell of gplayer + 4 ) )  then 
  82.     --    put "fling hit!"
  83.     mhit me, true
  84.     return false
  85.     
  86.   else maddtask gtime, me, the timer
  87.   
  88.   --  put "out mstart fling"
  89.   
  90. end mstart 
  91.  
  92. -- ==================================================
  93. -- mdotask method
  94. -- --------------------------------------------------
  95. on mdotask me
  96.   
  97.   --  put "in mdotask fling"
  98.   
  99.   if mcheckedges ( me ) then return false
  100.   
  101.   if mcheckhit ( me ) then 
  102.     --    put "fling hit!"
  103.     mhit me, false
  104.     return false
  105.   end if
  106.   
  107.   mfling me
  108.   
  109.   --  put "out mdotask fling"
  110.   
  111.   return updategap
  112.   
  113. end mdotask
  114.  
  115. -- ==================================================
  116. -- mhit method
  117. -- --------------------------------------------------
  118. on mhit me, direct
  119.   
  120.   --  put "in mhit fling"
  121.   
  122.   if mcheckblock ( gplayer, move ) then 
  123.     mmove gsound, data, #flingblock
  124.     set animname = #block
  125.    else
  126.     mslap gsound, data
  127.     set animname = #hit
  128.     mfling me
  129.     if direct then
  130.       mabort gplayer
  131.       mstun gplayer
  132.     else 
  133.       mdodamage gplayer, 30
  134.     end if
  135.   end if
  136.   
  137.   mdie me
  138.   mhit gfling, data, actualloc, animname
  139.   
  140.   --  put "in mhit fling"
  141.   
  142. end mhit
  143.  
  144. -- ==================================================
  145. -- mcheckhit method
  146. -- --------------------------------------------------
  147. on mcheckhit me
  148.   
  149.   --  put "in mcheckhit fling"
  150.   
  151.   case  ( the direction of me ) of
  152.     #left: set playercell =  (the cell of gplayer + 2) 
  153.     #right:  set playercell = (the cell of gplayer )
  154.   end case
  155.   
  156.   if cell = playercell then 
  157.     if not ( getone ( ducks , ( the currentmove of gplayer ) ) ) then
  158.       return true
  159.     end if
  160.   end if
  161.   
  162.   --  put "out mcheckhit fling"
  163.   
  164.   return false
  165.   
  166. end mcheckhit 
  167.  
  168. -- ==================================================
  169. -- mcheckedges method
  170. -- --------------------------------------------------
  171. on mcheckedges me
  172.   
  173.   --  put "in mcheckedges fling"
  174.   
  175.   case direction of 
  176.     #left:
  177.       if cell < 0 then 
  178.         mdie ( me )
  179.         return true
  180.       end if
  181.       
  182.     #right: 
  183.       if cell > 31  then
  184.         mdie ( me )
  185.         return true
  186.       end if
  187.       
  188.   end case
  189.   
  190.   --  put "out mcheckedges fling"
  191.   
  192.   return false
  193.   
  194. end mcheckedges 
  195.  
  196. -- ==================================================
  197. -- msetcell method
  198. -- --------------------------------------------------
  199. on msetcell me
  200.   
  201.   set actualloc = ( the loc of me ) - celloffset
  202.   set cell = mscreen2cell ( gcell, the loch of actualloc )
  203.   
  204. end msetcell 
  205.  
  206. -- ==================================================
  207. -- mfling method
  208. -- --------------------------------------------------
  209. on mfling me
  210.   
  211.   mmove me, velocity
  212.   msetcell me
  213.   
  214. end mfling me
  215.  
  216. -- ==================================================
  217. -- manimfinish method
  218. -- --------------------------------------------------
  219. on manimfinish me
  220.   
  221.   -- put "in manimfinish: " 
  222.   
  223.   mstart ancestor, me
  224.   
  225.   -- put "out manimfinish: " 
  226.   
  227. end manimfinish
  228.  
  229. -- ==================================================
  230. -- mdie method
  231. -- --------------------------------------------------
  232. on mdie me
  233.   
  234.   --  put "in mdie fling"
  235.   
  236.   mabort ancestor
  237.   mhide me
  238.   mreturnthedead  gfling , me
  239.   
  240.   --  put "out mdie fling"
  241.   
  242. end mdie
  243.